*******************************************************************************
●readme.doc種別　　　　　：SEGA3D-SGL コンバータ説明ファイル
●ファイル記号名称　　　　：S3D2SGL.DOC
●対象ツール記号名称　　　：S3D2SGL
●対象ツール名称　　　　　：SEGA3D-SGL コンバータ
●バージョン              ：1.02
●作成者　　　　　　　　　：
●作成日　　　　　　　　　：1995-08-02
●その他のメッセージ　　　：なし
*******************************************************************************

■変更履歴
　1995/07/18　　Ver1.00

　1995/07/24　　Ver1.01
    ・カラーコードが出力されない不具合の対応
    ・出力アトリビュートデータをstatic宣言をしないように変更

　1995/08/02　　Ver1.02
    ・VERTICESが90度回転している場合、出力するマクロをVERTICESではなく、
    VTXROT90を出力するようにした。
    (このマクロの宣言はユーザプログラムで設定します。)

１．はじめに
　S3D2SGL.EXEは、3D Editor で出力されたSEGA3D形式ファイルを、
SGL(Sega 3D Game Library)で容易に使用できるようにC言語のソースコードに変換
するツールです。
　このツールの目的として、SEGA3DフォーマットをSGLのアトリビュートデータ
に変換する以外に、プログラムで簡単に表示できるようなサンプルプログラムに
合った形でデータを出力します。
　そのため、このコンバータで出力されたデータは、アトリビュートデータ以外は
サンプルプログラムに合わせた形で出力されています。

２．S3D2SGL使用方法
２−１　入力ファイルについて
　入力ファイルは、SEGA3Dフォーマットファイルを渡します。
　　Usage: S3D2SGL [SEGA3D(.3d)](ret)
                    SEGA 3D:　3D Editorで出力されたSEGA3Dフォーマット
　なお、MacintoshからのデータS3D2SGLで対応できていない作業を前処理として行う
必要があります。
　(1) Macintoshのデータフォーマットでは改行コードが0dHのみになるため、
　　テキストエディタなどで0dHから0dH 0aHに編集する必要があります。
　(2) 使用されているModel名などにC言語の配列の変数名として使用できない漢字や
　　制御文字が使用されている場合、ASCII文字に変更する必要があります。

２−２　出力ファイルについて
　出力ファイルは、容易に作成した3Dデータを表示できるようにしています。
　(1) Model名＋拡張子(.C)
　　モデルごとに作成されるアトリビュートデータファイルで、モデル数分の
　ファイルが作成されます。
　　内容は、モデルごとのPOINT構造体、POLYGON構造体、ATTR構造体、PDATA構造体が出
　力されます。
    Ver1.02以降、POLYGON構造体のVERTICESマクロの出力で頂点ナンバーが90度回転して
  いるデータの場合、VERTICESマクロの代わりにVTXROT90という文字列を出力するように
  しました。このVTXROT90についてはSGLでマクロ宣言されていないので、次のようなマクロ
  宣言をユーザプログラムで行って下さい。
    #define	VTXROT90(a,b,c,d)	VERTICES(b,c,d,a)	/*0123->1230*/

　(2) SEGA3D名＋拡張子(.H) 
　　モデルごとに出力されるPDATA構造体のexturn外部宣言ファイルです。

　(3) SEGA3D名＋拡張子(.INI)
　　モデルごとにそのモデルの中心点の初期位置座標(POS)・初期角度(angle)・初期倍
　率(SCALE)のデータが出力されます。
　　モデルが階層の場合、そのデータは親モデルの相対データになっています。

　(4) SEGA3D名＋拡張子(.CC)
　　モデルの構造をSGLのマトリクス関数やポリゴン出力関数を利用したプログラムを
　出力します。
　　出力する関数は、SGL関数群のslPushMatrix()、slPopMatrix()、slPutPolygon()と、
　ユーザ作成関数set_polygon()を出力します。
　　set_Polygon関数は、平行移動・回転・倍率の処理を行うSGL関数を使用して作成
　します。
　＜例＞
        static void set_polygon(FIXED *pos, ANGLE *ang, FIXED *scl)
        {
            slTranslate(pos[X], pos[Y], pos[Z]);
            slRotX(ang[X]);
            slRotY(ang[Y]);
            slRotZ(ang[Z]);
            slScale(scl[X], scl[Y], scl[Z]);
        }
　(5) SEGA3D名＋拡張子(.C) 
　　(1)のアトリビュートデータのインクルード宣言ファイルです。

　(6) SEGA3D名＋拡張子(.GR)
　　グーローシェーディングのテーブルを出力します。存在しない場合は、空データを
　出力しますのでご注意ください。

　(7) LIGHT.INI
    slLight関数に設定する光源データファイルを出力します。

２−３　ユーザ記述ファイルについて
  S3D2SGLおよびS3DTEXで出力したファイルは、生成したデータを扱いやすいようにする情報
を出力しています。
　サンプルプログラムでは SEGA3D.H という宣言ファイルを利用して作成しています。
　＜例＞
　　/* SEGA3D.H の内容 */
    　　#define	SEGA3D_INC      "3d\dolphin.h"　　--> ２−２ (2)
    　　#define	SEGA3D_INI      "3d\dolphin.ini"  --> ２−２ (3)
    　　#define	SEGA3D_CC       "3d\dolphin.cc"   --> ２−２ (4)
    　　#define	SEGA3D_C        "3d\dolphin.c"    --> ２−２ (5)
    　　#define	SEGA3D_GR       "3d\dolphin.gr"   --> ２−２ (6)
    　　#define	SEGA3D_LIGHT    "3d\light.ini"    --> ２−２ (7)
　　/* テクスチャデータに関する設定 (S3DTEX.EXE の出力データの宣言) */
        #define	SEGA3D_TEXDEF   "texture\texture.def"
        #define	SEGA3D_TEXC     "texture\dolphin.c"
        #define	SEGA3D_TEX      tex_dolphin
        #define	SEGA3D_PIC      pic_dolphin
        #define	SEGA3D_MAXTEX	96　-->必ず使用するテクスチャ数を設定してください。
　　/* カメラの初期Z位置と、モデルの倍率設定 */
        #define	CAMERA_ZDEF	-3000.0
        #define	OFFSET_SCL	1.0
    /* グーローシェーディングデータが存在する場合 */
        #if	1
        #define		SEGA3D_GOUR
        #endif
    /* テクスチャデータが存在する場合 */
　　    #if	0
　　    #define		SEGA3D_TEXTURE
　　    #endif
    /* SEGA3Dフォーマットの場合 */
　　    #if	1　　
　　    #define		SEGA3D
        #define	VTXROT90(a,b,c,d)	VERTICES(b,c,d,a)	/*0123->1230*/
　　    #endif

３．SEGA3DとSGLの座標系の違いについて
　SEGA3DフォーマットとSGLの座標系は、Y方向についてのみ正負が逆になっています。
このコンバータではこの変更を行っていないので、プログラムなどで正負の変換を
行ってください。
　提供のサンプルプログラムではプログラム側で変更しております。

４．VERTICESマクロとVTXROT90マクロについて
  Ver1.02以降、POLYGON構造体のVERTICESマクロの出力で頂点ナンバーが90度回転して
いるデータの場合、VERTICESマクロの代わりにVTXROT90という文字列を出力するように
しました。このVTXROT90についてはSGLでマクロ宣言されていないので、次のようなマクロ
宣言をユーザプログラムで行って下さい。
  　#define	VTXROT90(a,b,c,d)	VERTICES(b,c,d,a)	/*0123->1230*/
なお、サンプルプログラムでは SEGA3D.H 内で上記の宣言を行っています。

５．サンプルプログラムについて
　サンプルプログラムのSEGA3D_1、SEGA3D_2、SEGA3D_3ディレクトリのプログラムで、
S3D2SGLツールの実行手順を記述していますので、ご参照ください。
　詳細は、SAMPLE2.DOCに記載しています。

　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　以　上
